NMEA 0183
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
NMEA 0183은 물리, 데이터 링크, 애플리케이션 계층으로 구성된 간단한 ASCII 기반의 직렬 통신 프로토콜이다. 주로 GPS 등에서 데이터 전송을 위해 사용되며, 하나의 송신기로부터 여러 수신기로 데이터를 문장 형태로 전송한다. 물리 계층은 RS-232, RS-422 등의 전기적 전송 규격을 사용하며, 데이터 링크 계층은 전송 속도, 데이터 비트, 패리티 비트 등을 정의한다. 애플리케이션 계층은 데이터 전송을 위한 문장 형식을 규정하며, 각 문장은 '$'로 시작하여 '*'와 체크섬, `
더 읽어볼만한 페이지
- GPS - 텔레매틱스
텔레매틱스는 통신 기술을 이용한 정보 전달을 의미하는 텔레커뮤니케이션과 정보 과학의 합성어로, 차량 텔레매틱스를 중심으로 자동차 자동화 및 자율주행 기술과 연계되어 다양한 서비스에 활용되며 미래 교통 시스템 구축에 기여할 것으로 예상된다. - GPS - 지오캐싱
지오캐싱은 GPS 기술을 활용하여 숨겨진 보물(캐시)을 찾고 기록하는 야외 레크리에이션 활동이며, 전 세계적으로 수백만 개의 캐시가 존재하고, 안전, 법적, 환경 문제와 관련된 사건도 발생한다. - 네트워크 프로토콜 - UUCP
UUCP는 유닉스 시스템 간 파일 복사, 원격 명령 실행, 이메일 및 유즈넷 뉴스 전송을 위한 프로토콜 및 프로그램 모음으로, 초기 인터넷 확장에 중요한 역할을 했으나 TCP/IP 기반 서비스 보편화로 사용이 감소했다. - 네트워크 프로토콜 - 프레임 릴레이
프레임 릴레이는 LAN 간 또는 WAN 종단점 간 데이터 전송을 위한 고속 패킷 교환 방식 통신 프로토콜로, X.25 프로토콜을 간소화하여 속도를 높이고, 영구 가상 회선을 통해 안정적인 연결을 제공하며, 서비스 품질 설정을 통해 프레임 우선순위를 지정할 수 있었으나, 현재는 다른 기술에 밀려 사용이 감소하고 있다. - 컴퓨터 버스 - 인피니밴드
인피니밴드는 고성능 컴퓨팅 환경에서 서버, 스토리지, 네트워크 장치 간 고속 데이터 전송을 위한 직렬 통신 기술로, 슈퍼컴퓨터나 데이터 센터에서 주로 사용되지만 이더넷 기반 기술과의 경쟁 및 새로운 컴퓨팅 환경에 대한 적응이라는 과제를 안고 있다. - 컴퓨터 버스 - 버스 (컴퓨팅)
버스는 컴퓨터 내부 구성 요소나 컴퓨터 간에 데이터를 전송하는 통로로, 데이터 전송 방식에 따라 병렬 버스와 직렬 버스로 나뉘며, 컴퓨터 시스템의 성능 향상에 핵심적인 역할을 하는 중요한 구성 요소이다.
NMEA 0183 |
---|
2. 레이어
NMEA 0183은 물리 계층, 데이터링크 계층, 애플리케이션 계층의 3가지 레이어로 구성된다.[32]
- 물리 계층: RS-232, RS-422와 같은 전기적 전송 규격을 사용한다. 대부분의 NMEA-0183 출력 하드웨어는 EIA-232 포트도 구동할 수 있지만, 원래 표준은 EIA-422이다.
- 데이터링크 계층: 전송 속도(Baud rate), 데이터 비트, 패리티 비트, 정지 비트 등을 정의한다.
- 애플리케이션 계층: 데이터 전송을 위한 문장(Sentence) 형식을 규정하며, GPS 등에서 표준 프로토콜로 사용된다.[32]
NMEA 0183은 하나의 "송신기"에서 여러 "수신기"로 데이터를 "문장" 형태로 전송하는 ASCII 기반 직렬 통신 프로토콜이다. 멀티플렉서를 사용하면 여러 센서가 단일 컴퓨터 포트와 통신할 수 있다.
NMEA 0183은 RS-422 전송만 정의하지만, NMEA 0183의 문장이 UDP 데이터그램(패킷당 하나의 문장)에 배치되어 IP 네트워크를 통해 전송되는 사실상의 표준도 존재한다.
2. 1. 애플리케이션 레이어
NMEA 0183 문장은 '$' 기호로 시작하여 '*'와 체크섬,문장의 구조는 다음과 같다.
- '$': 문장의 시작을 알린다.
- 처음 두 글자: 장비 종류(Talker ID)를 나타낸다. 예를 들어, GPS 장비는 'GP', 수심 측정 장비는 'SD'를 사용한다.
- 다음 세 글자: 데이터의 종류를 나타낸다.
- 데이터 필드: 쉼표(,)로 구분된다.
- '*': 체크섬의 시작을 알린다.
- 체크섬: '$'와 '*' 사이의 모든 데이터를 XOR(exclusive or) 연산하여 계산한다. 데이터 무결성을 확인하는 데 사용된다.
: 문장의 끝을 알린다.
NMEA 0183 표준은 EIA-422 전기 표준을 사용하지만, 대부분의 NMEA 0183 출력 하드웨어는 EIA-232 포트도 구동할 수 있다.
메시지의 최대 길이는 시작 문자와 끝 문자(
NMEA 0183에서 사용되는 예약 문자는 다음과 같다.
ASCII | 16진수 | 10진수 | 용도 |
---|---|---|---|
0x0d | 13 | 캐리지 리턴 | |
0x0a | 10 | 라인 피드, 종료 구분 기호 | |
! | 0x21 | 33 | 캡슐화 문장 구분 기호 시작 |
$ | 0x24 | 36 | 시작 구분 기호 |
* | 0x2a | 42 | 체크섬 구분 기호 |
, | 0x2c | 44 | 필드 구분 기호 |
\ | 0x5c | 92 | TAG 블록 구분 기호 |
^ | 0x5e | 94 | ASCII 문자의 16진수 표현에 대한 코드 구분 기호 |
~ | 0x7e | 126 | 예약 |
예시:
```text
$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,8,1.03,61.7,M,55.2,M,,*76
$GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A
$GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70
$GPGSV,3,2,11,02,39,223,19,13,28,070,17,26,23,252,,04,14,186,14*79
$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76
$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43
```
위 예시는 Elextech사의 G1800s라는 GPS 모듈에서 출력된 정보이며, Baud Rate는 9600bps이다.
2. 1. 1. 주요 문장 (Sentence)
NMEA 0183은 다양한 표준 문장을 포함하며, 각 문장은 특정 정보를 전달한다. 주요 문장은 다음과 같다.[10]
각 문장의 예시와 설명은 다음과 같다.
- '''GGA (GPS 고정 데이터)'''
예시: `$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48`
- `114455.532`: 시간 (UTC 기준 11시 44분 55.532초)
- `3735.0079,N`: 위도 (북위 37도 35.0079분, 약 37.5도)
- `12701.6446,E`: 경도 (동경 127도 1.6446분, 약 127.0도)
- `1`: Fix 종류 (0: Invalid, 1: GPS, 2: DGPS)
- `03`: 사용된 위성 개수
- `7.9`: HDOP (수평 정밀도 희석)
- `48.8,M`: 해수면 기준 고도 (미터)
- `19.6,M`: 지오이드고 (미터)
- `0.0`, `0000`: DGPS 관련 정보
- `48`: 체크섬
- '''GSV (관측 가능한 GNSS 위성)'''
예시:
`$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77`
`$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71`
`$GPGSV,3,3,10,21,18,051,,27,12,315,*77`
- `3`: 총 GSV 문장 수
- `1`, `2`, `3`: 현재 문장 번호
- `10`: 총 위성 수
- 각 위성 정보 (최대 4개): 위성 번호, 고도, 방위각, SNR
- 체크섬
- '''RMC (권장 최소 GPS 데이터)'''
예시: `$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A`
- `114455.532`: 시간 (UTC 기준 11시 44분 55.532초)
- `A`: 신호 신뢰성 (A: 유효, V: 무효)
- `3735.0079,N`: 위도 (북위 37도 35.0079분)
- `12701.6446,E`: 경도 (동경 127도 1.6446분)
- `0.000000`: 속도 (knots)
- `121.61`: 방향 (정북 기준 121.61도)
- `110706`: 날짜 (2006년 7월 11일)
- ` `: 자차 (나침반 정보 없음)
- `*0A`: 체크섬
예시: `$—GSA,a,x,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,x.x,x.x,x.x*hh`
- `$—GSA`: 문장 ID
- `a`: 모드 1 (A: 2D/3D 자동 변환, M: 수동 전환)
- `x`: 모드 2 (2: 2D, 3: 3D)
- `xx`: 사용된 위성 번호 (1~12개)
- `VDOP, HDOP, PDOP`: 오차값
- `hh`: 체크섬
주요 통신기기 ID는 다음과 같다.[8][9]
- BD 또는 GB - 베이더우
- GA - 갈릴레오
- GP - GPS
- GL - 글로나스
3. 데이터링크 계층
NMEA 0183은 일반적으로 4800 bps의 전송 속도를 사용한다. 데이터 비트는 8비트, 패리티 비트는 없으며, 정지 비트는 1비트를 사용한다. NMEA-0183HS 변형은 38400 bps를 사용하며, AIS에서 주로 사용된다.[4][5][6][7]
보레이트 | 4800 |
---|---|
데이터 비트 | 8 |
패리티 | 없음 |
스톱 비트 | 1 |
핸드셰이크 | 없음 |
4. 메시지 구조
NMEA 0183 메시지는 인쇄 가능한 ASCII 문자로 구성되며, 메시지 구조를 정의하기 위해 예약 문자를 사용한다.
ASCII | 16진수 | 10진수 | 용도 |
---|---|---|---|
0x0d | 13 | 캐리지 리턴 | |
0x0a | 10 | 라인 피드, 종료 구분 기호 | |
! | 0x21 | 33 | 캡슐화 문장 시작 구분자 |
$ | 0x24 | 36 | 시작 구분자 |
* | 0x2a | 42 | 체크섬 구분자 |
, | 0x2c | 44 | 필드 구분자 |
\ | 0x5c | 92 | TAG 블록 구분자 |
^ | 0x5e | 94 | ASCII 문자의 16진수 표현을 위한 코드 구분 기호 |
~ | 0x7e | 126 | 예약 |
메시지 최대 길이는 시작 문자와 종료 문자(
5. 체크섬
'$'와 '*' 사이의 모든 문자에 대해 XOR 연산을 수행하여 체크섬 값을 계산한다. 이 값은 데이터의 무결성을 검증하는 데 사용된다.[34] 체크섬은 대부분의 데이터 문장에서 선택 사항이지만, RMA, RMB, RMC 등 일부 문장에서는 필수적으로 포함되어야 한다. 체크섬은 두 자리 16진수로 표현된다.
6. Vendor Extensions
대부분의 GPS 제조업체는 유지보수 및 진단 목적으로 표준 NMEA 문장 외에 자체적인 특수 메시지를 제품에 포함한다. 이러한 확장 메시지는 '$P'로 시작하며, 표준화되어 있지 않다.
7. 소프트웨어 호환성
NMEA 0183은 다양한 항해 및 지도 소프트웨어에서 지원된다. 주요 호환 소프트웨어는 다음과 같다.
소프트웨어 종류 | 소프트웨어 이름 | 비고 |
---|---|---|
일반 | ||
GPS 및 GNSS | ||
오픈 소스 |
8. 관련 표준
NMEA 0183은 EIA-422 전기적 규격을 따르지만, 대부분의 하드웨어는 EIA-232 포트를 사용한다. 표준 규격은 절연된 입출력을 요구하지만, 이 요건을 충족하지 않는 하드웨어도 많이 존재한다.[19][20]
NMEA 0183은 ASCII 기반의 직렬 통신 프로토콜로, 데이터가 하나의 "송신부(talker)"에서 여러 개의 "수신부(listener)"로 "문장(sentence)" 형태로 전송되는 방식을 정의한다. 중간 확장기를 사용하면 송신부는 거의 무제한의 수신부와 단방향 통신을 할 수 있으며, 멀티플렉서를 사용하면 여러 센서가 하나의 컴퓨터 포트로 전송할 수 있다. 이 규격은 각 문장(메시지) 유형의 내용도 정의하여, 모든 수신부가 메시지를 정확하게 분석할 수 있도록 한다.
NMEA 0183은 RS-422 전송만을 정의하지만, NMEA-0183 문장을 UDP 데이터그램(1패킷에 1문장)에 넣어 IP 네트워크로 전송하는 사실상의 표준도 존재한다.
NMEA 규격은 프로프라이어터리 규격이며, 2020년 9월 현재 2000USD가 넘는 가격에 판매되고 있다(NMEA 회원 제외). 그러나 대부분은 공개된 정보를 통해 역설계되었다.[21][22]
9. 한국의 활용 사례
대한민국에서는 NMEA 0183 프로토콜이 해양, 항공, 육상 등 다양한 분야에서 활용되고 있다.
참조
[1]
웹사이트
The NMEA FAQ
http://www.kh-gps.de[...]
1997-09-15
[2]
웹사이트
NMEA 0183 vs NMEA 2000
https://www.https/
2018-11-00
[3]
웹사이트
NMEA 2000 white paper
https://www.nmea.org[...]
2009-05-00
[4]
웹사이트
Publications and Standards from the National Marine Electronics Association (NMEA) / NMEA 0183
http://www.nmea.org/[...]
NMEA
2008-11-00
[5]
웹사이트
National Marine Electronics Association - NMEA
https://www.nmea.org[...]
[6]
웹사이트
NMEA Revealed
https://gpsd.gitlab.[...]
2019-03-00
[7]
웹사이트
NMEA data
http://www.gpsinform[...]
[8]
웹사이트
NMEA Revealed - Talker IDs
https://gpsd.gitlab.[...]
2024-05-26
[9]
웹사이트
NMEA 0183 - Standard For Interfacing Marine Electronic Devices - Talker Identifier Mnemonics
https://www.nmea.org[...]
2020-01-31
[10]
웹사이트
Introduction to GPS Data NMEA & RTCM
https://fdocuments.i[...]
[11]
웹사이트
Google Maps for Android
http://www.google.co[...]
[12]
웹사이트
/sys/kern/tty_nmea.c
http://bxr.su/o/sys/[...]
OpenBSD
2006-00-00
[13]
웹사이트
ObserVIEW - Free Vibration Analysis Software
https://vibrationres[...]
[14]
웹사이트
QGIS Documentation - Live GPS tracking
https://github.com/q[...]
[15]
웹사이트
ERRATA # 0183 120512
http://www.nmea.org/[...]
NMEA
[16]
웹사이트
NMEA PUBLISHES UPDATED VERSION OF NMEA 0183 FOR NEW GLOBAL SATELLITE SYSTEMS
https://www.nmea.org[...]
2018-11-00
[17]
웹사이트
NMEA 0183 vs NMEA 2000
https://casualnaviga[...]
2018-11-00
[18]
웹사이트
NMEA 2000 white paper
https://www.nmea.org[...]
2009-05-00
[19]
웹사이트
Publications and Standards from the National Marine Electronics Association (NMEA) / NMEA 0183
http://www.nmea.org/[...]
NMEA
2008-11-00
[20]
웹사이트
National Marine Electronics Association - NMEA
https://www.nmea.org[...]
[21]
웹사이트
NMEA Revealed
https://gpsd.gitlab.[...]
[22]
웹사이트
NMEA data
http://www.gpsinform[...]
[23]
웹사이트
http://mango.seroton[...]
[24]
웹사이트
http://www.gpsy.com/
[25]
웹사이트
http://www.turboirc.[...]
[26]
웹사이트
http://www.grlevelx.[...]
[27]
웹사이트
https://www.google.c[...]
[28]
웹사이트
http://www.polarnavy[...]
[29]
웹사이트
http://www.aviasail.[...]
[30]
웹사이트
ゼンリン電子地図帳Zi12 機能紹介
http://www.zenrin.co[...]
(株)ゼンリン
[31]
웹사이트
カシミール3D
http://www.kashmir3d[...]
[32]
웹사이트
GPS 센서
https://www.u-blox.c[...]
[33]
웹사이트
NMEA
https://www.nmea.org[...]
[34]
블로그
하얀쿠아의 이것저것 만들기 Blog
http://techlog.guruc[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com